package com.desaysv.svhttp.handler;

import com.desaysv.svhttp.callback.IBaseCallBack;
import com.desaysv.svhttp.coder.IResponseDecoder;
import com.desaysv.svhttp.handler.type.HttpType;
import com.desaysv.svhttp.interceptor.IInterceptor;
import com.desaysv.svhttp.param.HttpParams;

/**
 * 代理类通用接口
 *
 * @param <T>
 * @author linzi
 * @version 1.0
 * @date 2022-7-19
 * @since 022-7-19
 */
public interface IHandler<T> {
    /**
     * @param url 请求路径
     * @return 网络代理对象
     */
    T baseUrl(String url);

//    /**
//     * @param context 上下文对象
//     * @return 网络代理对象
//     */
//    T callInUIThread(Context context);

    /**
     * @param context 连接器对象
     * @return 网络代理对象
     */
    T setInterceptor(IInterceptor context);

    /**
     * @param decoder 响应解码器
     * @return 网络代理对象
     */
    T responseDecoder(IResponseDecoder decoder);

    /**
     * 执行请求
     *
     * @param type     请求类型
     * @param url      请求路径
     * @param params   请求参数
     * @param callBack 请求回调
     */
    void request(HttpType type, String url, HttpParams params, IBaseCallBack callBack);
}
